package com.github_Dididipapa.shortlink.project.toolkit;

import java.util.Random;

/**
 * 缓存过期时间工具类，用于防止缓存雪崩
 */
public class CacheExpireUtil {

    private static final Random random = new Random();

    /**
     * 生成带偏差的过期时间（秒）
     *
     * @param baseTime 基础过期时间（秒）
     * @param deviation 偏差范围（秒）
     * @return 带随机偏差的过期时间
     */
    public static int generateExpireTime(int baseTime, int deviation) {
        // 生成 -deviation 到 +deviation 的随机偏差值
        int randomDeviation = random.nextInt(deviation * 2 + 1) - deviation;
        // 计算最终过期时间，确保不小于1秒
        return Math.max(1, baseTime + randomDeviation);
    }

    /**
     * 生成带偏差的过期时间（秒），默认偏差为±10%
     *
     * @param baseTime 基础过期时间（秒）
     * @return 带随机偏差的过期时间
     */
    public static int generateExpireTime(int baseTime) {
        // 默认偏差为±10%
        int deviation = (int) (baseTime * 0.1);
        return generateExpireTime(baseTime, deviation);
    }
}
